<!DOCTYPE html>
<html lang="en">

<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Document</title>
</head>

<body>
    <script type="text/javascript">
        //对象创建
        //1.字面量
        // var obj = {
        //     name:'张静',
        //     age:18,
        //     title:'学生',
        //     bf:'张三',
        //     ex:'',
        //     // makebf(bfname){
        //     //     console.log();
        //     // }

        //     //行为(方法)一般是拿来修改对象的属性值
        //     makebf: function(bfname){
        //         //有没有男朋友
        //         if(this.bf==''){
        //             this.bf = bfname;
        //             console.log(this.name+'与'+bfname+'谈恋爱');
        //         }else{
        //             console.log('不能交两个男盆友');
        //         }
        //     },
        //     breakup: function(){
        //         //现任变前任
        //         this.ex = this.bf;
        //         this.bf = '';
        //     }
        //     //breakup

        // }
        // obj.makebf('李四')


        //2.构造函数方式
        //1.  this{}  ：new
        //2. this赋值 (自己操作)
        //return this
        // function Students(name,age){
        //     this.name = name;
        //     this.age = age;
        // }

        // var zj = new Students('Zoe',16)


        //3.工厂模式   (设计模式)
        // function GetValues(name,age) {
        //     var that = { }
        //     that.name = name
        //     that.age = age
        //     return that
        // }
        // var that = GetValues('张三',16)
        // console.log(typeof that);
        //4.原型模式 
        //5.混合模式


        //数组解构
        // const arr = [1, 4, 5, 6, 8]
        // // let[a,b,...args] = arr
        // let [a, , , , b] = arr
        // console.log(a, b);

        //对象解构
        // var obj = {
        //     name: '张三',
        //     age: 16,
        //     skill: {
        //         sname: 'Java',
        //         year: '2022'
        //     }
        // }

        //取数据
        //console.log(obj.skill[1].sname);

        // let personName = obj.name, personAge = obj.age;

        //对象解构:取别名
        // let{name:personName, age:personAge} = obj
        // console.log(personName);
        // console.log(personAge);

        // let{name,age,job='学生'} = obj

        // let name, age;
        // ({ name, age } = obj)

        // console.log(name, age);


        //嵌套解构
        // let { name: personName, skill: { sname: skillName } } = obj
        // console.log(personName);
        // console.log(skillName);


        






    </script>
</body>

</html>